using System;
using System.Collections.Generic;
using LinFu.IoC.Configuration;

namespace CoreEx.Samples.DomainModel.Implementation
{
	[Implements(typeof(IEmployee))]
	[Serializable]
	public class Employee : IEmployee
	{

		#region Private Members

		private readonly IList<IEmployeeTerritory> _employeeTerritories = new List<IEmployeeTerritory>();
        private readonly IList<ITerritory> _territories = new List<ITerritory>();
        private readonly IList<IOrder> _orders = new List<IOrder>();

		#endregion

		public int EmployeeID { get; set; }
		public string LastName { get; set; }
		public string FirstName { get; set; }
		public string Title { get; set; }
		public string TitleOfCourtesy { get; set; }
		public DateTime? BirthDate { get; set; }
		public DateTime? HireDate { get; set; }
		public string Address { get; set; }
		public string City { get; set; }
		public string Region { get; set; }
		public string PostalCode { get; set; }
		public string Country { get; set; }
		public string HomePhone { get; set; }
		public string Extension { get; set; }
		public byte[] Photo { get; set; }
		public string Notes { get; set; }
		public string PhotoPath { get; set; }
		public IList<IEmployeeTerritory> EmployeeTerritories 
		{
			get { return _employeeTerritories; }
		}
        public IList<ITerritory> Territories
        {
            get { return _territories; }
        }
		public IList<IOrder> Orders 
		{
			get { return _orders; }
		}
		public IEmployee ParentEmployee { get; set;}
	}
}
